#pragma once

#include <algorithm/analytical_model/algorithm/cuda/inter_op/Data.h>

#include <tuple>

namespace solar::cpu
{
    auto
    setNormal(const solar::cuda::inter_op::Float3& pos,
              const solar::cuda::inter_op::Float3& focus_center,
              const solar::cuda::inter_op::Float3& sunray_dir) -> solar::cuda::inter_op::Float3;
    auto getImagePlaneAxis(const solar::cuda::inter_op::Float3& focus_center,
                           const solar::cuda::inter_op::Float3& pos,
                           const solar::cuda::inter_op::Float3* vertices)
        -> std::tuple<solar::cuda::inter_op::Float3, solar::cuda::inter_op::Float3,
                      solar::cuda::inter_op::Float3>;
} // namespace solar::cpu
